home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / shells / kiss-0.11 / kiss-0 / kiss / src / doalias.c < prev    next >
C/C++ Source or Header  |  1995-03-23  |  1KB  |  69 lines

  1. #include "kiss.h"
  2.  
  3. static void dumpalias (int i)
  4. {
  5.     register int
  6.     j;
  7.  
  8.     printf ("%s -> ", alias [i].str [0]);
  9.     for (j = 1; j < alias [i].nstr; j++)
  10.     printf ("%s ", alias [i].str [j]);
  11.     putchar ('\n');
  12. }
  13.  
  14. static void listaliases ()
  15. {
  16.     register int
  17.     i;
  18.  
  19.     for (i = 0; i < nalias; i++)
  20.     dumpalias (i);
  21. }
  22.  
  23. static void listalias (char *name)
  24. {
  25.     register int
  26.     i;
  27.  
  28.     if ( (i = isalias (name)) != -1 )
  29.     dumpalias (i);
  30. }
  31.  
  32. int doalias (Stringstack s)
  33. {
  34.     register int
  35.     i;
  36.  
  37.     if (s.nstr == 1)
  38.     {
  39.     listaliases ();
  40.     return (0);
  41.     }
  42.  
  43.     if (s.nstr == 2)
  44.     {
  45.     listalias (s.str [1]);
  46.     return (0);
  47.     }
  48.  
  49.     if (! strcmp (s.str [1], "-h"))
  50.     return (warning ("Bad commandline.\n"
  51.              "Usage: alias           : list all aliases\n"
  52.              "       alias cmd       : list alias \"cmd\"\n"
  53.              "       alias cmd redef : create alias\n"
  54.              "Use $1, $2 etc. in the \"redef\" to access "
  55.                     "arguments.\n"));
  56.  
  57.     if ( (i = isalias (s.str [1])) != -1 )
  58.     {
  59.     clearstack (&alias [i]);
  60.     alias [i] = copystringstack (s, 1, s.nstr - 1);
  61.     return (0);
  62.     }
  63.  
  64.     alias = xrealloc (alias, (nalias + 1) * sizeof (Stringstack));
  65.     alias [nalias++] = copystringstack (s, 1, s.nstr - 1);
  66.  
  67.     return (0);
  68. }
  69.